// Copyright 2020-2023 Bloomberg Finance L.P.
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <rmqamqpt_buffer.h>

#include <gtest/gtest.h>

using namespace BloombergLP;
using namespace rmqamqpt;

TEST(Buffer, Breathing)
{
    const uint8_t buf[] = {'H', 'E', 'L', 'L', 'O'};
    Buffer b(buf, sizeof(buf));
    EXPECT_EQ(b.available(), sizeof(buf));
}

TEST(Buffer, CopyByte)
{
    const uint8_t buf[] = {'H', 'E', 'L', 'L', 'O'};
    Buffer b(buf, sizeof(buf));
    EXPECT_EQ(b.available(), sizeof(buf));
    char first = b.copy<char>();
    EXPECT_EQ(first, 'H');
    b.skip(3);
    EXPECT_EQ('O', b.copy<char>());
    EXPECT_EQ(b.available(), 0);
}
